function acf= acfplot(Y, Fs, maxlag, titlestr)
%
% acfplot calls autocov() to compute an extimate of the autocorrelation
% function (acf) of the input vector Y, and then plots the acf with the
% time axis labeled in units of either seconds or ms.  Note: This function
% does not use the Statistics Toolbox.
%
% Syntax:
%
% acf= acfplot(Y, Fs, maxlag, titlestr)
%
% Y is a column vector containing a sequence of samples.  The remaining
% input arguments are optional.  Fs specifies the sampling rate (samples
% per second); the default is 1.  maxlag is the maximum lag for which the
% autocorrelation is to be computed; if no value is specified, a default
% value is generated by the function autocov.  titlestr specifies a title
% to be printed at the top of the plot; the default is a null string.
%
% Dr. Phillip M. Feldman   14 Jan, 2007


% Section 1: Check input arguments and assign default values if necessary.

if nargin < 1 | nargin > 4
   error('The number of calling arguments must be between 1 and 4.');
end

% Supply default values for optional input arguments:

if nargin < 4, titlestr= ''; end
if nargin < 3, maxlag= 0; end
if nargin < 2, Fs= 1; end


% Section 2: Call autocov to compute autocovariance (acv).  We then
% convert the autocovariance to autocorrelation (acf) and generate a
% vector T containing time values corresponding to the lags in acf.

% Compute autocovariance function:

if maxlag <= 0 % Let autocov supply a value for maxlag.
   acv= autocov(Y);
else
   acv= autocov(Y, maxlag);
end

% Normalize autocovariance to obtain autocorrelation:

acf= acv/acv(1);

% Create a column vector T that counts starting at 0, with same number
% of elements as the acf vector:

T= [0 : size(acf,1)-1]';

% Fix time vector so that steps correspond to 1/Fs, with units of either
% seconds or ms, depending on the last value of T:

T= T / Fs;

if T(size(T,1),1) < 3
   T= 1000.0 * T;
   xtext= 'time in ms';
else
   xtext= 'time in s';
end

% Section 3: Generate plot.

%fig(0.8, 0.6);

h1= plot(T, acf);
set(h1, 'LineWidth', 2, 'Color', 'Black');
%set(gca, 'FontSize',12);

% Add axis labels and title:
h1= xlabel(xtext);
%set(h1, 'FontSize', 14);
h1= ylabel('autocorrelation');
%set(h1, 'FontSize', 14);
h1= title(titlestr);
%set(h1, 'FontSize', 14);

% Force lower y-axis limit to be highest multiple of 0.1 that is less
% than or equal to all of the acf values.  Force upper y-axis limit to
% unity:

ylim([0.1*floor(10.0*min(acf)) 1]);

grid on;
